home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Caml Light 0.7 / examples / compress / fileprio.ml < prev    next >
Text File  |  1995-06-01  |  936b  |  25 lines

  1. type 'a t = Vide | File of int * 'a * 'a t * 'a t;;
  2. let vide = Vide;;
  3. let rec enlève_sommet = function
  4.     Vide -> raise File_vide
  5.   | File(prio, elt, Vide, Vide) -> Vide
  6.   | File(prio, elt, gauche, Vide) -> gauche
  7.   | File(prio, elt, Vide, droite) -> droite
  8.   | File(prio, elt, (File(prio_g, elt_g, _, _) as gauche),
  9.                     (File(prio_d, elt_d, _, _) as droite)) ->
  10.       if prio_g < prio_d
  11.       then File(prio_g, elt_g, enlève_sommet gauche, droite)
  12.       else File(prio_d, elt_d, gauche, enlève_sommet droite);;
  13.  
  14. let extraire = function
  15.     Vide -> raise File_vide
  16.   | File(prio, elt, _, _) as file -> (prio, elt, enlève_sommet file);;
  17. let rec ajoute file prio elt =
  18.   match file with
  19.     Vide ->
  20.       File(prio, elt, Vide, Vide)
  21.   | File(prio1, elt1, gauche, droite) ->
  22.       if prio <= prio1
  23.       then File(prio, elt, ajoute droite prio1 elt1, gauche)
  24.       else File(prio1, elt1, ajoute droite prio elt, gauche);;
  25.